package net.lzzy.practicesapi1.services;

import net.lzzy.practicesapi1.entities.User;

import java.util.List;
import java.util.UUID;

/**
 * @author 梁园钲
 */
public interface UserService {
    /**
     * 登录时检查用户名密码是否正确
     * @param userName
     * @param password
     * @return
     */
    User check(String userName, String password);

    /**
     * 注册时检查用户是否已被占用
     * @param userName
     * @return
     */
    boolean isUserNameOccupied(String userName);

    /**
     * 注册新用户
     * @param user
     * @return
     */
    User register(User user);

    /**
     * 获取用户salt，用于登录时加密
     * @param userName
     * @return
     */
    String getSalt(String userName);

    /**
     * 获取所以用户
     * @return
     */

    List<User> get();

    /**
     * 分页形式获取所以用户
     * @param page
     * @param size
     * @return
     */
    List<User> get(int page,int size);

    /**
     * 所有用户数量
     * @return
     */
    Integer count();

    /**
     * 根据关键词搜索用户
     * @param keyword
     * @return
     */
    List<User> search(String keyword);
    List<User> getApplyTeacher(boolean apply);
    User approveTeacher(UUID id);

    User declineTeacher(UUID id);

    User banUser(UUID id);

    /**
     * 根据用户id获取用户
     * @param id
     * @return
     */
    User getUser(UUID id);

}
